package utilidades;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Clase Cifrados.
 * 
 * @author David González Requejo.
 */
 
public class Cifrados {
        
    /**
     * Recibe una cadena de caracteres y retorna una cadena de caracteres cifrada en MD5.
     * 
     * @param cadena String con la cadena de caracteres a cifrar.
     * @return Retorna la cadena de caracteres cifrada en MD5 o null.
     */
    
    public static String cifrarMD5( String cadena ) {
        
        byte[] bytes;
        int dimension;
        
        try {
            
            MessageDigest cifrado = MessageDigest.getInstance( "MD5" );            
            bytes = cifrado.digest( cadena.getBytes() );

            dimension = bytes.length;
            StringBuilder cadenaFinal = new StringBuilder( dimension );
            
            for( int idx = 0; idx < dimension; idx++ ) {

                int valor = bytes[ idx ] & 255;

                if( valor < 16 ) {
                    
                    cadenaFinal.append( "0" ).append( Integer.toHexString( valor ) );
                    
                } else {
                    
                    cadenaFinal.append( Integer.toHexString( valor ) );
                    
                }
                
            }
            
            return cadenaFinal.toString();
           
        } catch( NoSuchAlgorithmException excepcion ) {
         
            Logger.getLogger( Cursos.class.getName() ).log( Level.SEVERE, null, excepcion );           
            return null;
            
        }              
        
    }

}